import { login, userInfo, getUsername } from '@/api/user'
import { getToken, setToken, removeToken, } from '@/utils/auth'
import { setTimestamp } from '@/utils/auth' //导入时间戳


const state = {
  // 把token存到vuex中
  token: getToken(),
  // 用户资料
  userInfo: {}
}

const mutations = {
  getToken(state, token) {
    state.token = token
    // 把token存到本地
    setToken(token)
    // 把当前时间戳存到本地
    setTimestamp()
  },
  setuserInfo(state, payload) {
    state.userInfo = payload
  },
  // 退出删除token
  removeToken(state) {
    state.token = null
    // 调用removetoken 删除本地token
    removeToken()
  },
  // 删除用户信息
  removeuserInfo(state) {
    state.userInfo = {}
  }
}

const actions = {

  async login(context, data) {
    try {
      // 发起请求获取token
      let res = await login(data)
      // console.log(res);
      context.commit('getToken', res.data)
    } catch (error) {
      // 抛出报错
      return Promise.reject(error)
    }
  },
  // 发请求获取用户信息
  async getuserInfo(context) {
    let res = await userInfo()
    // console.log(res);
    // 获取员工基本信息头像
    let res2 = await getUsername(res.data.userId)
    // console.log(res2);

    // 用一个对象把两个信息整合到一个对象中
    let allInfo = {
      ...(res.data), ...(res2.data)
    }
    // 绑定数据
    context.commit('setuserInfo', allInfo)

  },
  // 退出登陆
  logout({ commit }) {
    // 调用修改数据
    commit('removeToken')
    commit('removeuserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

